<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- <script src="https://unpkg.com/vue@3/dist/vue.global.js"></script> -->
    <script src="../node_modules/vue/dist/vue.global.js"></script>
</head>

<body>
    <div id="app">
        <!-- 使用子组件 -->
        <global ref="g1"></global>
        <p ref="p1">
            父组件中的count:{{count}}
        </p>
    </div>
</body>

</html>
<script>
    // 子传父 : 方式2:
    // 可以在父组件中给子组件绑定ref 属性, 然后在父组件中通过this.$refs.ref属性值获取子组件的实例对象
    // 然后进而获取所有绑定在子组件实例上的数据和方法等等


    // ref属性的使用
    // 01: 如果ref 绑定在组件上, 获取的是组件的实例对象
    // 02: 如果ref 绑定原生的标签上, 获取的就是该标签的dom 节点(这个也是vue中常用的获取dom 节点方式)



    const { createApp } = Vue;
    const vm = createApp({
        data() {
            return {
                count: 0
            }
        },
        mounted() {
            //console.log('父组件实例this', this.$refs.g1); // undeifined
            // this.$refs.g1 为什么获取不到子组件的实例对象
            // 注意: 只能在挂载后的生命周期钩子函数中获取子组件实例
            console.log(this.$refs.g1.gobalcount);

            //获取p1
            console.log(this.$refs.p1.innerHTML);
        }

    });


    vm.component('global', {
        template: `<div>
                        <p>全局组件</p>
                  </div>`,
        data() {
            return {
                gobalcount: 999
            }
        }
    })
    //挂载根实例到根节点
    vm.mount('#app');

</script>